Rails Foundation Docs, Query Logs source_location, Dockerfile gets jemalloc | This Week in Rails
既存のRailsドキュメントを改善するためのチームが結成されました
レビューのために1週間ほどOpenにしておく方針のようです
現在は ActiveJob.perform_all_later, Action Text, Action Mailbox についてのドキュメント改善のプルリクエストが出されています
ActiveStorageに関する変更です
ActiveStorage::Filename をJSONエンコードする際に、無効なJSONが生成されてしまう問題がありました
これはファイル名がクオートで括られていないためです
ActiveStorage::Filename#to_json を削除することで解決しています
to_json メソッドでは単に to_s をしていました
このメソッドを削除することで ActiveSupport::ToJsonWithActiveSupportEncoder の実装に任されることになり、ファイル名がクオートで括られるようになります
code:rb
# Encode the given object into a JSON string
def encode(value)
stringify jsonify value.as_json(options.dup)
end
value は ActiveStorage::Filename のオブジェクト
code:rb
def as_json(*)
to_s
end
code:rb
def jsonify(value)
case value
when String
EscapedString.new(value)
when Numeric, NilClass, TrueClass, FalseClass
# ...
end
end
code:rb
def stringify(jsonified)
::JSON.generate(jsonified, quirks_mode: true, max_nesting: false)
end
ActiveRecordに関する変更です
アプリケーションが実行するSQLに関する情報を記録し、デバッグやパフォーマンスのチューニングに活用するためのものです
code:config/application.rb
config.active_record.query_log_tags_enabled = true
とすることで有効化できます
デフォルトでは次の4つの情報が記録されます
アプリケーション名
コントローラ名
アクション名
ジョブ名
code:config/application.rb
ただし、本番環境での使用は慎重に検討する必要があります
本番環境でこの機能を有効にすると、ログが大量に生成される可能性があるため、パフォーマンスに影響を与えることがあります
今回のプルリクエストでは、クエリを実行しているソースコードの位置も記録できるようになりました
code:config/application.rb
config.active_record.query_log_tags << :source_location
ソースコードの位置情報の計算にはコストが掛かるので、本番環境での利用にはさらに慎重になる必要があります。この旨は activerecord/CHANGELOG.md にも明記されました。